#include <iostream>

//函数无法声明真正的数组型别的形参，
//但可以将引用声明为数组的引用
//利用该性质可以写出返回数组长度的一个有意思的函数模板

template<typename T, std::size_t N>
constexpr std::size_t arraySize(T (&)[N]) noexcept
{
    return N;
}

int main(){
    int arr1[] = {1,2,3,4,5,6};
    int arr2[] = {1,2,3,4};
    std::cout << arraySize(arr1) << std::endl;
    std::cout << arraySize(arr2) << std::endl;
    return 0;
}